// 就是封装的一些公共组件 

//1  导入状态管理
import { useUserStore } from '@/store/user'
//导入全局路由
import { useRouter } from 'vue-router';
import router from '@/router';
//export function logout():Promise<> {  最后用 logout().then 链式调用
//传递进来一个回调函数  谁用这里 就穿参数  考虑多种情况
export function logout(before?: () => void,after?: () => void){  
    // 2  获取状态管理和数据约束 
    const useStore = useUserStore()
    // const router =  useRouter()
    before && before(); //先掉这个就可以直接拿token  判断如果传进来就执行
    //删除token
    localStorage.removeItem('token')
    //清空动态路由  通过名称删除现有的名称
    useStore.menus
        // 遍历删除
        .filter(item => item.parentId === 0)
        .forEach(item => {
            router.removeRoute(item.name)
    });
    //清空全局数据 一定要注意pinal是分多个仓库  一定要每个都清空
    useStore.username = ''
    useStore.menus = []
    // 退出登录
    router.push('/login')
    //调用cb函数
    after && after();
}

